<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 复杂数据类型传参
        function Person(name) {
            this.name = name;
        }

        function f1(x) {
            console.log(x.name); //2. 输出 刘德华
            x.name = '张学友';
            console.log(x.name); //3. 输出 张学友
        }
        var p = new Person("刘德华");
        console.log(p.name); // 1. 输出 刘德华
        f1(p);
        console.log(p.name); // 输出 刘德华
        //函数的形参可以看作是一个变量 当我们把引用数据类型变量传给形参时候 其实是把变量在栈空间里保存的堆地址复制给了形参
        //所以 形参和实参其实保存的是同一个地址 所有操作的是用一个对象。
    </script>
</head>

<body>

</body>

</html>